package process

import "fmt"

//因为UserMgr 有且只有一个
//并在很多地方都会使用到
//所以定义其为一个全局便两个

var (
	userMgr *UserMgr
)

type UserMgr struct {
	onlineUsers map[int]*UserProcess
}

func init() {
	userMgr = &UserMgr{
		onlineUsers: make(map[int]*UserProcess, 1024),
	}
}

func (um *UserMgr) AddOnlineUser(up *UserProcess) {
	um.onlineUsers[up.UserId] = up
}

//删除

func (um *UserMgr) DelOnlineUser(userId int) {
	delete(um.onlineUsers, userId)
}

func (um *UserMgr) GetAllOnlineUser() map[int]*UserProcess {
	return um.onlineUsers
}

//根据UserId 返回相应的值
func (um *UserMgr) GetOnlineUserById(userId int) (up *UserProcess,err error){\
	//如何从map中取出一个值  带检测的方式
	up , ok:= um.onlineUsers[userId]
	if !ok{//说明你要找的用户是不在线的 没有在map存储连接
		return fmt.Errorf("用户 %d 不存在",userId)

	}

}